home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / pennmush.000 / pennmush-1.50-p8-linux.tar / pennmush / CHANGES-5 < prev    next >
Text File  |  1993-04-21  |  18KB  |  354 lines

  1.  
  2. The changes in this file begin with PennMUSH 1.50 patchlevel 4 and go
  3. through patchlevel 7.
  4.  
  5.    -- Amberyl (lwl@eniac.seas.upenn.edu)
  6.  
  7. ==========================================================================
  8.  
  9. Version 1.50 patchlevel 4  #1,  October 23, 1992
  10.  
  11. --- Features ---
  12.  
  13. - New additions -
  14.     * @inprefix and @infilter attributes.
  15.     * Evaluative locks. @lock foo=atr/val does an evaluation on
  16.         the ATR attribute on foo (get_eval style). The lock is passed if
  17.         that equals val.
  18.  
  19. - Improvements -
  20.     * Added command count; priv'd WHO changed to reflect this.
  21.  
  22. - Changes to commands -
  23.     * @pemit and @remit to players obey pagelocks.
  24.     * @notify and @drain give player a message.
  25.  
  26. --- Other changes / bug fixes ---
  27.  
  28. - Minor changes -
  29.     * lock() always works for royalty.
  30.     * Matching for possessive look and get changed somewhat, so possession
  31.         checks are done _after_ trying to match everything else.
  32.     * lwho() works for everyone (but does not show dark wizards to mortals).
  33.     * Ignore "null" commands from non-players.
  34.  
  35. - Bug fixes -
  36.     * Changes which made it into 1.50 p3 #2:
  37.         Checking for valid location done near beginning of command checks.
  38.         Properly ifdef'ed a clear_mail() in wiz.c
  39.         Fixed a coredump bug in @search for no arg3 specified.
  40.     * Wizards and royalty can't unset their own flags. Also, royalty
  41.         can only roy-bit objects they own. Previously this latter was
  42.         enforced only via a controls check. This, however, allows royals
  43.         to roy-bit objects by placing them in a controlled zone; this is
  44.         not desirable behavior.
  45.     * @tport and friends work as advertised.
  46.     * @decompile on players no longer incorrectly sets a @parent field.
  47.     * 'look here' inside an object now properly displays idesc.
  48.     * Explicitly prevented non-connected players from being @booted.
  49.     * Fixed an echo 'bug' with puppets: (more of a 2.0 compat thing)
  50.          > @fo Puppet=:foofs.
  51.          Puppet> Puppet foofs.
  52.          Puppet foofs.
  53.     * Fixed direct entering of password in @password.
  54.     * Fixed bug with semaphores caused by not uncompressing semaphore
  55.         attribute before using it. Premature @notifies to prevent future
  56.         blocking should now work.
  57.     * Mail allows "hard" newlines, and now uses standard db-read routines.
  58.     * Mail sanity checks for bad objects with mail.
  59.     * atr_comm_match now correctly blocks checking of $commands from the
  60.         parent. Attributes are entered into the hash table as "checked" even
  61.         if they're just straight text and don't contain a $command.
  62.  
  63.  
  64. ==========================================================================
  65.  
  66. Version 1.50 patchlevel 5  #1,  November 8, 1992
  67.  
  68. --- Features ---
  69.  
  70. - New additions -
  71.     * LOGOUT command. Disconnects you from a character but not the MUSH.
  72.     * @daytime and @login replaced by generic @enable/@disable command.
  73.         These can also be used to control logging. Their values are now
  74.         settable in the config file.
  75.     * ISWORD(). Returns 1 if every character in a string is a letter.
  76.     * NO_COMMAND flag, on an experimental basis. An object set NO_COMMAND
  77.         is not checked for $commands. Pending more profiling data, this
  78.         flag might stay or go.
  79.  
  80. - Improvements -
  81.     * panic() routine now tells connected players the cause of the panic.
  82.  
  83. - Changes to commands -
  84.     * @decompile can take a wildcarded attribute pattern.
  85.     * @search and lsearch() have been fixed to be consistent with 2.0.
  86.         Also, parameters to them are no longer case-sensitive. In addition,
  87.         the PARENT class allows you to find all children of an object.
  88.         Royalty now performs these without restriction (i.e. like wizards).
  89.         Mortals can no longer get data on objects they don't own (for
  90.         example, @search flags=Wc no longer works for them.)
  91.         Fixed problems with "type conflicts" that weren't, and generally
  92.         robustified this code.
  93.  
  94. --- Other changes / bug fixes ---
  95.  
  96. - Minor changes -
  97.     * The make dependencies in the Makefile have been updated.
  98.     * @config now takes the switches "costs" and "globals". The latter
  99.         lists parameters like "logins", "daytime", and the logging stuff.
  100.         Also, redundant/stupid stuff in the @config listing has been zapped.
  101.     * All "strcpy(buff, "");" statements in eval.c replaced by an infinitely
  102.         more sensible "*buff = '\0';"
  103.     * Default flags set by the conf file are now checked for validity -- i.e.
  104.         you can't make GOING, STARTUP, and CONNECTED, or type flags, defaults.
  105.     * Royalty can see the quotas of other players via @quota.
  106.     * Royalty can always get the zone() of an object.
  107.     * Royalty can @stats other players.
  108.     * Removed the @use-does/@does and gripe commands. Nobody uses the first,
  109.         and there are better ways of communicating (like @mail) than gripe.
  110.     * Got rid of help.c, having the help functions call do_new_spitfile
  111.         directly (that function was moved into bsd.c)
  112.     * Moved all the dead code out of the dist package.
  113.     * Got rid of the nalloc memory allocation package, and all associated code
  114.         It's not been supported for close to a year, and nobody uses it.
  115.     * In hash stuff, malloc calls of the format malloc(sizeof(*ptr))
  116.         (K&R 2nd-edition how-to-write-hash-stuff standard) to the more
  117.         common (and sensible) malloc(sizeof(POINTER_TYPE)) format.
  118.  
  119. - Bug fixes -
  120.     * Players shouldn't be able to execute commands from Garbage if they
  121.         need a valid location.
  122.     * Documented the ISNUM() function (which existed but wasn't in the docs)
  123.     * Fixed exec() call problem with wrong 'cause' in did_it.
  124.     * Fixed sort() so it doesn't segfault on an empty list. Also, it no
  125.         longer uses calloc()  (and thus no longer leaks memory).
  126.     * Fixed a bug with semaphore execution not copying the stack correctly.
  127.     * Fixed the attribute lock corruption bug. AUGH.
  128.     * Logging function is only called for general commands if log_commands
  129.         is on or the player is SUSPECT.
  130.     * v() permission check is now correctly AF_MDARK not AF_WIZARD.
  131.     * find_flag_on_type (the wrapper for find_flag) now returns -1 on error
  132.         instead of 0, since 0 is the ROOM flag. All calls to these functions
  133.         have been modified.
  134.     * Functions are no longer evaluated unless the parser really needs them.
  135.         This cuts down on some overhead, as well as odd messages for things
  136.         like "help loc()" or even the nonsense "foo loc()"
  137.     * Fixed memory leak in page-return, and got rid of pronoun_substitute()
  138.         function completely (relic of the old parser).
  139.  
  140. ==========================================================================
  141.  
  142. Version 1.50 patchlevel 6  #1,  December 14, 1992
  143.  
  144. --- Features ---
  145.  
  146. - New additions -
  147.     * VAL() function. Takes leading numeric prefix from a string.
  148.     * INDEX() function. Like extract(), but works on arbitrary-length
  149.         strings, on an arbitrary separator.
  150.     * WHERE() function. Returns "true" location of an object.
  151.     * Settable attribute flags have been added (@set obj/atr=flag).
  152.         There are three such flags, "no_command", "visual", and
  153.         "no_inherit". The first two are just the old AF_NOPROG and
  154.         !AF_ODARK flags. The last prevents the inheritance of an
  155.         attribute by the children of a parent object.
  156.     * DEBUG flag, on an experimental basis. It is not settable by mortals,
  157.         and it is computationally expensive. It provides precise output
  158.         from the parser.
  159.     * New config directive EX_PUBLIC_ATTRIBUTES added. Examine format for
  160.         objects you don't control is now 2.0-ish. do_examine rewritten.
  161.  
  162. - Improvements -
  163.     * ITER() now works in a much more usable way. It gets its arguments
  164.         un-eval'ed, and escapes/braces are no longer needed to get it
  165.         to evaluate in a "normal" way. UFUN() also now works with ITER().
  166.     * SWITCH() can now take up to 100 arguments, and its arguments are not
  167.         evaluated until needed.
  168.  
  169. - Changes to commands -
  170.     * Royalty can set themselves DARK. This vanishes them from the WHO list
  171.         but not from the visible room contents.
  172.     * Royalty can set themselves MONITOR.
  173.  
  174. --- Other changes / bug fixes ---
  175.  
  176. - Efficiency -
  177.     * Major improvements in the efficiency of the game have been made. Most
  178.         of them are supported by profiling data (some have not been tested
  179.         under a profiler).
  180.     * string_compare has been replaced by strcasecmp. The built-in library
  181.         function is probably optimal.
  182.     * Got rid of reconstruct_messasge. No more spaces around '=' sign 
  183.         in 'say', '@wizwall', etc, and no more wasted time splicing messages
  184.         together.
  185.     * If we match "me", "here", "#dbref", or "*player", we do no further
  186.         matching.
  187.     * The construction "<name of nearby object> <command>" as an alias for
  188.         @force no longer works. "<#dbref> <command>" still works, but the
  189.         amount of matching caused by the former is insane.
  190.     * Rewrote spname(). If FULL_INVIS isn't defined, it's the same as the
  191.         Name() macro. Otherwise, it returns a const char * and doesn't do
  192.         a strcpy (blech).
  193.     * hash_fn now uses a bitmask instead of modulus. Hash table sizes have
  194.         also been increased.
  195.     * atr_match, atr_get, and atr_add now use all upper-case, eliminating
  196.         the need for string_compare rather than strcmp (and getting rid of
  197.         zillions of tolower() calls). Added upcasestr() function, which
  198.         converts a string to uppercase, in-place. (We convert from lower to
  199.         uppercase MUCH less frequently than vice versa).
  200.     * Small text files are now cached. As long as your small text files
  201.         are small (and they SHOULD be!) the extra memory overhead is not
  202.         at all significant. This eliminates the several grillion calls to
  203.         open() and close() caused by players connecting and disconnecting.
  204.         @readcache command added. (Note that you may have to add a blank
  205.         line to the end of your small text files, since the new code does
  206.         not automatically do so.)
  207.  
  208. - Misc. changes -
  209.     * Destroying an exit tells you what exit number you destroyed.
  210.     * Mortals can type "ex *player" (since they can type "ex [num(*player)]")
  211.     * Added flags.h (split from db.h).
  212.     * Normal MUSH @shutdown now writes out process statistics.
  213.     * The TERSE flag now suppresses ONLY auto-look messages.
  214.     * Things without real locations (like rooms) can once again @trigger.
  215.     * options.h file has been split from config.h. options.h contains all
  216.         the compilation directives; config.h contains the miscellaneous
  217.         configuration-type things which should not be modified.
  218.     * Commands done in GOING rooms are no longer considered invalid.
  219.     * @parent <object> with no other args unparents an object.
  220.     * REPEAT() with 0 repetitions returns a blank string, not an error.
  221.  
  222. - Code cleanup -
  223.     * DESC is typedef'ed rather than #define'd in bsd.c.
  224.     * Added new match predicate, match_nearby(). Like an "everything" match,
  225.         but does not check "absolute" refs and *player refs for mortals.
  226.         Cleaned up code to use this where appropriate.
  227.     * Almost all of the set.c functions now do matching in the standard way.
  228.     * In various places, checks for strlen(foo) == 0 have been replaced by
  229.         *foo == '\0'.
  230.     * addrout() is now hostname_convert() (a more sensible name). Also
  231.         rewrote it to use the standard conversion routines.
  232.     * All attribute fetches in eval.c use a consistent form of permission
  233.         checks. (This has the side-effect of no longer allowing objects
  234.         to get a ZFUN from a link_ok zmo). Also, Can_Read_Attr macro is
  235.         now used all over the code.
  236.     * Some minor cleanup in atr_add.
  237.     * fun_lcon, fun_lexits, next_con, and next_exit have been rewritten.
  238.         In addition to being much neater, they now provide more security;
  239.         you cannot use them remotely on a room you don't control, regardless
  240.         of whether or not you own any of the objects in it.
  241.     * The prefix for do_wall is directly assigned instead of being strcpy'ed.
  242.     * In eval.c, and some other files (partially), db[x].foo references 
  243.         have been replaced by the appropriate macros.
  244.     * Added where_is function, returning the true location of an object.
  245.     * can_link and can_link_to are macros.
  246.     * Added Can_Locate macro.
  247.     * In eval.c, fun_foo declarations are static void intstead of void.
  248.     * controls() code now uses a bunch of macros.
  249.  
  250. - Bug fixes -
  251.     * Eval locks now work properly, since we no longer clobber the 
  252.         uncompress buffer.
  253.     * setunion() duplication bug fixed.
  254.     * edit() recursion bug fixed.
  255.     * Definition of "nearby" corrected to include exits in the same room.
  256.     * You can't "kill" yourself.
  257.     * The lock buffer overflow problem has been fixed the "right" way.
  258.     * esnotify now uses notify_noecho, so puppets don't get emit repeats.
  259.     * Fixed coredump bug caused by exits doing certain funtion calls
  260.         (check was originally for NOTHING rather than GoodObject).
  261.     * Fixed possible buffer overflow problem in set_interp.
  262.  
  263. - Compatibility -
  264.     * The #ifdefs around the rusage stuff have been changed to HAS_RUSAGE.
  265.         The systems which do and don't have this don't follow any kind of
  266.         consistent pattern.
  267.     * Some minor changes to get the code Linux-compatible. The original
  268.         patches for this were provided by Bob Green (bob@inmos.co.uk).
  269.         The restart script is now written in sh instead of csh.
  270.         FNDELAY changed to O_NDELAY (on Suns, they're the same. Hopefully
  271.         this is true for other systems as well, so things don't break).
  272.  
  273. ==========================================================================
  274.  
  275. Version 1.50 patchlevel 7  #1,  January 17, 1993
  276.  
  277. --- Features ---
  278.  
  279. - New additions -
  280.     * Individual powers system. Individual objects and players can be given
  281.         the ability to do specific things, such as "examine anything",
  282.         "teleport anywhere", "boot players", etc.  The BUILDER and IMMORTAL
  283.         flags are now powers, as well.
  284.     * Expanded flag system. Flag lookups are now hashed. A database conversion
  285.         is necessary (see ADD_POWERS directive in options.h, which converts
  286.         a database for both the new flags and the powers system).
  287.     * There is a "no_clone" attribute flag (do not copy attribute when
  288.         the object is @cloned).
  289.     * "@config/functions" lists all functions.
  290.     * New command "@function" allows the addition of user-defined global
  291.         functions which behave just like built-in MUSH functions, but
  292.         can be programmed in MUSH in a UFUN() format.
  293.  
  294. - New functions -
  295.     * setq() and r() allow local variables (registers, numbered 0-9),
  296.         saved through the execution of a command.
  297.     * squish() removes leading and trailing spaces from a string, and 
  298.         crunches inter-word spaces down to a single space.
  299.     * filter() returns members of a list for which a user-def'ed function
  300.         evaluates to true ("1").
  301.     * fold() recursively evaluates a user-def'ed function and list.
  302.     * rjust() and ljust() pad strings with spaces (or another fill character)
  303.     * nsort() sorts a list of numbers.
  304.     * shuffle() randomizes order of elements in a list.
  305.     * scramble() randomizes order of characters in a string.
  306.   
  307. - Improvements -
  308.     * cat() can take an arbitrary number of arguments.
  309.     * conn() and idlesecs() now recognize #dbref and *player. Added alias
  310.         idle() for idlesecs().
  311.     * The mail database name is now a config option (if you use @mail, you
  312.         MUST change your conf file).
  313.  
  314. --- Other changes / bug fixes ---
  315.  
  316. - Misc. changes -
  317.     * "Exits:" line in examine is back.
  318.     * examine on non-existent attribute(s) returns "No matching attributes."
  319.     * NO_COMMAND doesn't block ^, since you have to set the LISTENER flag
  320.         on the object anyway in order to activate ^.
  321.     * @config shows a couple more options.
  322.     * The QUIET flag suppresses "Drained.", "Notified.", "Halted."
  323.     * Logging of database reads at startup is slightly neater.
  324.  
  325. - Code cleanup -
  326.     * Database loading routines have been changed. Support for "old-style"
  327.         MUSH databases has been removed (who USES old-style MUSH databases??)
  328.         The config directives ADD_PARENTS, ADD_LOCKS, and ADD_ZONES are gone;
  329.         if you need to convert using them, convert using an older PennMUSH
  330.         version, then upgrade that database to the present code.
  331.     * atr_comm_match and list_check stuff in game.c is macro'd and a bit
  332.         easier to read.
  333.     * Got rid of some unnecessary tprintfs with notify_noecho.
  334.     * Prevented buffer overflows with puppet messages.
  335.     * @switch and related stack-pointer-changing functions no longer keep
  336.         copying the stack; added local_wild set of functions.
  337.     * FUNCTION(x) general function declaration macro for eval.c functions.
  338.     * XFUNCTION(x) macro for functions not declared in eval.c
  339.     * cat() and strcat() functions use safe_str and friends.
  340.     * Fixed warnings about assignments being used as truth values.
  341.     * Recoded sort().
  342.     * List-handling functions use list2arr where possible (sort, setfuns).
  343.     * UFUN() code made more generic - addition of parse_attrib() function,
  344.         splits up something of format "<obj>/<attr>" (returning dbref and
  345.         pointer to attrib), do_userfn() executes something of UFUN() format.
  346.     * "channels" field is only in memory if you use chat system.
  347.  
  348. - Bug fixes -
  349.     * Debug and Verbose output now call raw_notify instead of notify,
  350.         so stack pointer doesn't get clobbered.
  351.     * switch() and iter() arguments are evaluated properly (small change
  352.         made so nesting of these within other functions works sensibly).
  353.     * Players cannot enter arbitrary objects (by dbref) remotely.
  354.